package jmine.tec.services.api.export;

import jmine.tec.services.io.ServiceBean;

/**
 * Interface para objetos que sabem preencher um ServiceBean de um serviço que irá reproduzir a entidade. Implementações de ServiceFiller
 * devem ter um contrutor vazio e serem stateless.
 * 
 * @author lundberg
 * @param <E> tipo da entidade.
 */
public interface ServiceFiller<E> {

    /**
     * Preenche o ServiceBean com parâmetros para que a execução do serviço implique na reprodução da entidade dada. Devem ser preenchidos o
     * nome do serviço, a action e os parâmetros de execução.
     * 
     * @param bean bean
     * @param referenceMap referenceMap
     * @param entity entity
     */
    void fillServiceBean(ServiceBean bean, ReferenceMap referenceMap, E entity);
}
